package cc.shacocloud.redis.study.lock;

/**
 * 乐观锁
 */
public interface OptimisticLock {

    /**
     * 获取锁的版本号
     * <p>
     * 版本号在提交时被用到
     *
     * @param lockName 锁名称
     * @return 锁的版本号
     */
    int getLockVersion(String lockName);

    /**
     * 提交锁
     *
     * @param lockName 锁名称
     * @param version  版本号
     * @return 如果提交成功则返回 {@code  true} 反之为 {@code false}
     */
    boolean submitLock(String lockName, int version);

}
